<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>

    function Parent2(){
        this.a = "hahaha"
    }
    function Parent3(){
        this.b = "heihieheie"
    }
    function Parent4(){
        this.c = "xixiixi"
        this.a = "哈哈哈";
    }

    function Parent(msg){
        this.msg = msg;
        this.show = function(){
            console.log(this.msg)
        }
    }
    Parent.prototype.init = function(){
        console.log("这是parent的init")
    }

    function Child(msg){
        // 改变Parent的this指向
        // Parent.call(this, msg);
        // Parent.apply(this, [msg]);
        Parent.bind(this, msg)();
        Parent2.bind(this)();
        Parent3.bind(this)();
        Parent4.bind(this)();
    }

    const p = new Parent("hello");
    console.log(p);
    p.show();
    p.init();

    const c = new Child("world");
    console.log(c);
    c.show();
    c.init();

    // 为什么p有msg，有show
        // 因为Parent内的this指向了p
    // 为什么c没有msg，没有show
        // 因为Child内的this没有绑定msg和show
    // 如何做到Child内的this也有Parnet的this具有的属性或方法？
        // 在Child内，修改Parent的this指向，指向Child内的this
        // 因为Child内的this指向了Child将来的实例c


    

    
</script>
</html>